The spread of personal computers and workstations has led to the development of networks for interconnecting such equipment and common resources such as printers and data storage devices. More powerful and sophisticated computing equipment and programs have progressively become available, allowing the processing of data in larger and larger quantities, for example in the form of database information and graphic images. These developments have placed increasing demands on the speed and capacity of network communications links.
For various reasons it has been found desirable to encode data prior to transmission over communications links, in particular:                to ensure that certain minimum error detection capabilities are provided;        to provide uniquely identifiable control signals which can be embedded in the encoded symbol stream;        to assist in maintaining synchronisation of circuit operation (for example by avoiding prolonged sequences of symbols without any signal transition); and        to limit undesired electromagnetic emissions from conductors, and, even in the case of optical systems, from transceivers and chipsets.It is also usually desirable to avoid significant imbalance or disparity in the occurrence of differently-valued symbols (e.g. positive and negative polarity symbols), to avoid problems of transmission through systems having a.c. coupling, such as through isolating transformers. Various codes have been proposed and adopted which attempt to balance these objectives relative to one another. Many of these proposals involve the use of block codes, in which blocks or words of successive symbols in a data stream are encoded into corresponding blocks or words of code symbols, typically with more symbols in a code word than there are data symbols in the corresponding data word. Another common technique, particularly used for limiting electromagnetic emissions, is scrambling, in which a pseudo-random symbol sequence is combined with the data stream to limit the occurrence of regular symbol patterns. Block codes and scrambling both impose a requirement for synchronisation between a transmitter and receiver: the receiver must correctly identify the boundaries between successive code words in the received signal stream (alignment), and a de-scrambling process in the receiver must apply a pseudo-random symbol sequence which exactly matches that used in the transmitter's scrambler.        
It is an object of this invention to provide methods and apparatus which can be used to facilitate synchronisation between transmitters and receivers in a communications system.